package com.lft.ten_commonly_used_algorithms04.kmp;

/**
 * 暴力匹配算法
 */
public class ViolenceMatchAlgorithm {
	public static void main(String[] args) {
		String str1 = "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";
		String str2 = "尚硅谷你尚硅你";
		System.out.println(violenceMatch(str1, str2));
	}
	
	/**
	 * 暴力匹配方法
	 * @param str1 原字符串
	 * @param str2 子字符串
	 * @return 原字符串的起始索引
	 */
	public static int violenceMatch(String str1, String str2) {
		// 将两字符串，都转换成各自的字符数组。
		char[] s1 = str1.toCharArray();
		char[] s2 = str2.toCharArray();
		
		// 获得各字符数组的长度。
		int s1length = s1.length;
		int s2length = s2.length;
		
		// s1 中的索引
		int i = 0;
		// s2 中的索引
		int j = 0;
		// 保证匹配时不越界
		while (i < s1length && j < s2length) {
			// 匹配成功
			if (s1[i] == s2[j]) {
				i++;
				j++;
			} else {
				// 没有匹配成功
				// s1[i] != s2[j] ，令 i = i - (j - 1)，j = 0
				i -= j - 1;
				j = 0;
			}
		}
		// 判断什么时候是匹配成功的
		if (j == s2length) {
			return i - j;
		} else {
			return -1;
		}
	}
}
